package com.quanxiaoha.weblog.common.utils;

import org.apache.commons.math3.distribution.EnumeratedIntegerDistribution;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.IntStream;

public class MathDice {
    public static void main(String[] args) {
        // 1. 定义点数集 [1,2,...,20]
        int[] values = IntStream.rangeClosed(1, 20).toArray();

        // 2. 定义概率（此处用线性递减：P(n) ∝ (21-n)）
        double[] probabilities = new double[20];
        double totalWeight = IntStream.range(0, 20)
                            .mapToDouble(i -> 20 - i) // 权重=21-(i+1)
                            .sum();
        for (int i = 0; i < 20; i++) {
            probabilities[i] = (20.0 - i) / totalWeight; // 归一化
        }

        // 3. 创建分布并抽样
        EnumeratedIntegerDistribution dist = 
            new EnumeratedIntegerDistribution(values, probabilities);
        int sum = -0;
        Map<Integer,Integer> map = new HashMap<>();
        for (int i = 0; i < 100; i++) {
            int sample = dist.sample();
            if (map.containsKey(sample)) {
                map.put(sample, map.get(sample) + 1);
            }else {
                map.put(sample, 1);
            }
            System.out.println("投掷结果"+i+": " + sample);
            sum += sample;
        }
        for (Integer key : map.keySet()) {
            System.out.println("key:"+key+" value:"+map.get(key));
        }
        System.out.println("总和为："+sum);

        String str = "今年剩下的日子要怎么过：\n" +
                "现实：\n" +
                "按现在的条件，状况\n" +
                "肯定是谈不了女朋友了\n" +
                "肯定是赚不了大钱了\n" +
                "因为我能找到的工作，最多就几千块，能把今年的债还完都不错了，然后我需要想个办法，找到各种赚钱的途径\n" +
                "明年跳槽，跳一个3-5年的（这个今年就不用思考了）\n" +
                "所以我要：\n" +
                "1. 我要学会去享受过程，专注过程，这是生活的意义\n" +
                "2. 其实可以哪里都不去旅游，就看书、看书、看书。\n" +
                "3. 做饭，提升我的外在形象\n" +
                "4. 我要干掉我的社恐\n" +
                "5. 我要找到一两个别的赚钱的途径\n" +
                "6. 然后我要去找到一份工作\n" +
                "7. 还债、存钱、理论上不网恋，不想女人，除非碰到缘分\n" +
                "8. 展开内心，拥抱世界，感受世界\n" +
                "9. 去强力的感受活着这件事情\n" +
                "为什么要活在当下，因为我发现我是做不到心想事成的。\n" +
                "成不成都看天意，我要做的就是，让我的此时此刻满意，等以后来复盘，也不会后悔，因为我尽力了，我也会对自己满意的，成败是概率问题是运气，我无法把握的东西\n" +
                "我不在乎，我不关注结果，因为结果是上天的馈赠，\n" +
                "我只在乎，我可以做到的过程，\n" +
                "结果：张高，变帅，或是掉发，前列腺";
    }
}